Examples of how to use volatile - http://www.ibm.com/developerworks/java/library/j-jtp06197.html

Related with volatile, explanation of thread safe of initalize with final / non-final variable - http://www.nabble.com/Parametric-Initialization-On%09DemandHolder-Idiom---tf4384557.html 

http://jeremymanson.blogspot.com/2007/08/volatile-does-not-mean-atomic.html
http://jeremymanson.blogspot.com/2009/06/volatile-arrays-in-java.html

Difference between volatile and synchronization - http://stackoverflow.com/questions/3603157/volatile-keyword-in-java-clarification http://javarevisited.blogspot.com/2011/06/volatile-keyword-java-example-tutorial.html

http://blog.thesoftwarecraft.com/2014/07/javas-volatile-modifier.html

Explain volatile in bytecode - https://plumbr.eu/blog/understanding-volatile-via-example

Detail explanation - http://www.codesod.com/2015/10/30/java-multi-threading-volatile-variables-happens-before-relationship-and-memory-consistency/

https://vmlens.com/articles/cp/java_memory_model_enables_tests/

https://vmlens.com/articles/cp/thread_safety_definition/